using System.Linq;

namespace Algorithm.LeetCode
{
    /// <summary>
    /// 第十四题：最长公共前缀
    /// </summary>
    public class No14
    {
        /*
         * 编写一个函数来查找字符串数组中的最长公共前缀。
         *
         * 如果不存在公共前缀，返回空字符串 ""
         */

        public static string LongestCommonPrefix(string[] strs)
        {
            var item = strs.FirstOrDefault(s => s.Length == strs.Min(s => s.Length));
            if (string.IsNullOrEmpty(item))
            {
                return string.Empty;
            }

            for (var i = item.Length; i >= 0; i--)
            {
                var temp = i == 0 ? item : item[..i];
                if (strs.All(s => s.StartsWith(temp)))
                {
                    return temp;
                }
            }

            return string.Empty;
        }
    }
}